/*
 *------------------------------------------------------------------------------
 * @File      :    ei_mai_ao_define.h
 * @Date      :    2021-4-8
 * @Author    :    lomboswer <lomboswer@lombotech.com>
 * @Brief     :    Media Interface for MADP(Media Development Platform).
 *
 * Copyright (C) 2020-2021, LomboTech Co.Ltd. All rights reserved.
 *------------------------------------------------------------------------------
 */

#ifndef __EI_MAI_AO_DEFINE_H__
#define __EI_MAI_AO_DEFINE_H__

#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif

#include "ei_mai_errno.h"
#include "ei_mai_comm_define.h"
#include "ei_comm_ippu.h"

#define EI_AO_MAX_NUM 1

#define EI_MAI_ERR_AO_NULL_PTR        EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_NULL_PTR)
#define EI_MAI_ERR_AO_NOTREADY        EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_SYS_NOTREADY)
#define EI_MAI_ERR_AO_INVALID_DEVID   EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_INVALID_DEVID)
#define EI_MAI_ERR_AO_INVALID_CHNID   EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_INVALID_CHNID)
#define EI_MAI_ERR_AO_EXIST           EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_EXIST)
#define EI_MAI_ERR_AP_UNEXIST         EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_UNEXIST)
#define EI_MAI_ERR_AO_NOT_SUPPORT     EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_NOT_SUPPORT)
#define EI_MAI_ERR_AO_NOT_PERM        EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_NOT_PERM)
#define EI_MAI_ERR_AO_NOMEM           EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_NOMEM)
#define EI_MAI_ERR_AO_NOBUF           EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_NOBUF)
#define EI_MAI_ERR_AO_ILLEGAL_PARAM   EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_ILLEGAL_PARAM)
#define EI_MAI_ERR_AO_BUSY            EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_BUSY)
#define EI_MAI_ERR_AO_BUF_EMPTY       EI_MADP_DEF_ERR(EI_MADP_MOD_AO, MADP_EN_ERR_LEVEL_ERROR, MADP_EN_ERR_BUF_EMPTY)

typedef enum eiEI_AO_INTF_TYPE_E
{
    EI_MADP_INTF_TYPE_HDMI = 0,
    EI_MADP_AO_INTF_TYPE_ACODEC = 1,
    EI_MADP_AO_INTF_TYPE_BUTT
}EI_MADP_AO_INTF_TYPE_E;

typedef struct eiEI_MADP_AO_ATTR_S
{
    EI_MADP_AUDIO_SAMPLE_RATE_E enSampleRate;
    EI_MADP_AUDIO_BITWIDTH_E    enBitwidth;
    EI_MADP_AUDIO_SOUND_MODE_E  enSoundMode;
    EI_MADP_AUDIO_MODE_E        enAudioMode;
    EI_U32                      u32PtNumPerFrm;
    EI_MADP_AO_INTF_TYPE_E      enAoIntfType;
    EI_U32                      u32ChnCnt;
} EI_MADP_AO_ATTR_S;

#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif

#endif

